﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using com.clinica.business.BE.actcliente;
using com.clinica.business.BE.gesliq;
using com.clinica.business.BE.comun;
using LiclUtil;
using LiclCliente.Views;
using System.Text;

namespace wesiGestClinica.actcliente
{
    public partial class FormsConBandejaCliente : Shared.SMGPaseBase, ILiclBandejaCliente
    {
        private LiclBandejaClientePresenter oPresenter = new LiclBandejaClientePresenter();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                oPresenter.View = this;
                this.Master.TituloModulo = "Consulta de Clientes";
                CargarTipoDocumento();
                IniciarControles();
                EstablecerModos(0);
            }
            Master.OcultarMensaje();
            oPresenter.View = this;
        }
        protected override void DefineHandlers()
        {
            btn_Buscar.Click += new EventHandler(btn_Buscar_Click);
            dg_Cliente.RowCommand += new GridViewCommandEventHandler(dg_Cliente_RowCommand);
            UCBarra1.img_Nuevo.Click += new ImageClickEventHandler(img_Nuevo_Click);
        }
        #region Eventos
        void img_Nuevo_Click(object sender, ImageClickEventArgs e)
        {
            string url = "FormsManCliente.aspx?action=1&Codcliente=";
            string script = "window.location = '" + url + "';";
            ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", script, true);
        }

        void dg_Cliente_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Modificar")
            {
                string strUrl = string.Empty;
                string strScript = string.Empty;
                GridViewRow fila = (GridViewRow)((ImageButton)e.CommandSource).NamingContainer;
                dg_Cliente.SelectedIndex = fila.RowIndex;
                string[] arr = e.CommandArgument.ToString().Split(new char[] { '|' });
                if (arr[0].ToString().Trim() != "0" )
                {
                    strUrl = "FormsManCliente.aspx?action=2&Codcliente=" + arr[0];
                    strScript = "window.location = '" + strUrl + "';";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", strScript, true);
                }

            }

            if (e.CommandName == "Eliminar")
            {
                GridViewRow fila = (GridViewRow)((ImageButton)e.CommandSource).NamingContainer;
                dg_Cliente.SelectedIndex = fila.RowIndex;
                string[] arr = e.CommandArgument.ToString().Split(new char[] { '|' });
                if (arr[0].ToString().Trim() != "0")
                {
                    ClienteBE oCli = new ClienteBE();
                    oCli.Codcliente = int.Parse(arr[0].ToString());
                    oPresenter.onEliminar_Cliente(oCli);
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "Mostrarmensaje('Se Elimino El Cliente " + arr[0] + "');", true);
                    btn_Buscar_Click(null, null);
                }
            }


            if (e.CommandName == "Ver")
            {
                string strUrl = string.Empty;
                string strScript = string.Empty;
                GridViewRow fila = (GridViewRow)((ImageButton)e.CommandSource).NamingContainer;
                dg_Cliente.SelectedIndex = fila.RowIndex;
                string[] arr = e.CommandArgument.ToString().Split(new char[] { '|' });
                if (arr[0].ToString().Trim() != "0")
                {
                    strUrl = "FormsManCliente.aspx?action=0&Codcliente=" + arr[0];
                    strScript = "window.location = '" + strUrl + "';";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", strScript, true);
                }
            }
        }

        void btn_Buscar_Click(object sender, EventArgs e)
        {
            if (ValidarBusqueda())
            {
                ClienteBE oCli = new ClienteBE();
                oCli.Tipopersona = int.Parse(rbl_Tipopersona.SelectedValue);
                oCli.Numerodocidentidad = txt_Numerodocidentidad.Text.Trim();
                oCli.Razonsocial = txt_Razonsocial.Text.Trim();
                oPresenter.onObtener_Clientes(oCli);
            }
        }

        #endregion
        #region Metodos
        private void EstablecerModos(int modo)
        {
            switch (modo)
            {
                case 0:
                    UCBarra1.img_Nuevo.Visible = true;
                    UCBarra1.img_Volver.Visible = true;
                    break;
            }
        }
        private void CargarTipoDocumento()
        {
            com.clinica.business.BE.comun.ParametrosBE oParm = new com.clinica.business.BE.comun.ParametrosBE();
            oParm.NombreTabla = "TIPPERSON1";
            oPresenter.onObtener_Tabla(oParm);
        }
        private void IniciarControles()
        {
            if (rbl_Tipopersona.Items.Count > 0)
                rbl_Tipopersona.Items[0].Selected = true;

            List<ClienteBE> lst = new List<ClienteBE>();
            lst.Add(new ClienteBE());
            dg_Cliente.DataSource = lst;
            dg_Cliente.DataBind();
        }

        private bool ValidarBusqueda()
        {
            bool bolVal = true;
            StringBuilder strErrores = new StringBuilder();

            //if (txt_Numerodocidentidad.Text.Trim() != string.Empty)
            //{
            //    try
            //    {
            //        float.Parse(txt_Numerodocidentidad.Text.Trim());
            //    }
            //    catch 
            //    {
            //        bolVal = false;
            //        Master.MostrarMensaje(" Solo ingrese caracteres numericos en Número de documento o en Valor ingresado es muy grande", TipoMensaje.Error);
            //    }
            //}
            //if (!bolVal)
            //{
            //    Master.ColocarMensaje(TipoMensaje.Error, strErrores.ToString(), strErrores.ToString());
            //}
            return bolVal;
        }

        public bool HabilitarBotonesGrilla(string Estado, string Accion)
        {
            bool val = false;
            #region habilitar
            switch (Accion)
            {
                case "1": // Editar
                    //if (tipoLiq == "2")
                    //{
                    //    if (Estado == "2" || Estado == "5" || Estado == "6")
                    //        val = true;
                    //    else
                    //        val = false;
                    //}
                    //else
                    //    val = false;
                    if (Estado == "2") val = false;
                    else val = true;

                    break;
                case "2": // Anular
                    //if (Estado != "1" && tipoLiq == "2")
                    //    val = true;
                    if (Estado == "2") val = false;
                    else val = true;

                    break;
                case "3": // Ver
                    val = true;
                    break;
                default:
                    break;
            }
            #endregion
            return val;
        }
        #endregion
        #region ILiclCliente Members

        public void ObtenerTabla(List<com.clinica.business.BE.comun.ParametrosBE> lst)
        {
            rbl_Tipopersona.DataSource = lst;
            rbl_Tipopersona.DataValueField = "Codigo";
            rbl_Tipopersona.DataTextField = "DescripcionCorta";
            rbl_Tipopersona.DataBind();
        }

        public void ObtenerClientes(List<ClienteBE> lst)
        {
            if (lst.Count > 0)
            {
                dg_Cliente.DataSource = lst;
                dg_Cliente.DataBind();
                lbl_Cantidad.Text = lst.Count.ToString() + " Registros(s) encontrados";
            }
            else
            {
                lst.Add(new ClienteBE());
                dg_Cliente.DataSource = lst;
                dg_Cliente.DataBind();
                Master.MostrarMensaje("No Existen   Clientes para este criterio de busqueda", TipoMensaje.Advertencia);
                lbl_Cantidad.Text = "0 Registros(s) encontrados";
            }
        }

        public void MostrarMensajeError(string Mensaje)
        {
            Master.MostrarMensaje(Mensaje.Trim(), TipoMensaje.Error);
            
        }

        #endregion




    }
}
